/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.tahunkelompokanggaranyangdigunakan;

import java.util.List;
import java.util.Map;
import org.sadhar.sia.common.ClassSession;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.sadhar.sipp.kelompokbiaya.KelompokBiaya;
import org.sadhar.sipp.kelompokbiaya.KelompokBiayaDAO;
import org.sadhar.sipp.kelompokbiaya.KelompokBiayaDAOImpl;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Textbox;

/**
 *
 * @author bloodrunk
 */
public class TahunKelompokAnggaranYangDigunakanWnd extends ClassApplicationModule {

    private TahunKelompokAnggaranYangDigunakanDAO tahunKelompokAnggaranYangDigunakanDAO;
    private KelompokBiayaDAO kelompokBiayaDAO;
    private Label lblTahunAnggaran;
    private Listbox lstboxDaftarKelompokAnggaranUmum;
    private Listbox lstDaftarKelompokAnggaranKhusus;
    private Listbox lstboxDaftarSubKelompokAnggaran;
    private Listbox lstDaftarTahunKelompokAnggaran;
    private Combobox cmbboxTahunKelompokAnggaran;
    private String tahun;
    private ClassSession session;

    public TahunKelompokAnggaranYangDigunakanWnd() {
        tahunKelompokAnggaranYangDigunakanDAO = new TahunKelompokAnggaranYangDigunakanDAOImpl();
        kelompokBiayaDAO = new KelompokBiayaDAOImpl();
    }

    public void onCreate() throws Exception {
        lblTahunAnggaran = (Label) getFellow("lblTahunAnggaran");
        cmbboxTahunKelompokAnggaran = (Combobox) getFellow("cmbboxTahunKelompokAnggaran");
        lstboxDaftarKelompokAnggaranUmum = (Listbox) getFellow("lstboxDaftarKelompokAnggaranUmum");
        lstDaftarKelompokAnggaranKhusus = (Listbox) getFellow("lstboxDaftarKelompokAnggaranKhusus");
        lstDaftarTahunKelompokAnggaran = (Listbox) getFellow("lstboxDaftarTahunKelompokAnggaran");
        lstboxDaftarSubKelompokAnggaran = (Listbox) getFellow("lstboxDaftarSubKelompokAnggaran");
        session=new ClassSession("2009","");
        lblTahunAnggaran.setValue(session.getThnAnggaran());
        loadTahunKelomponAnggaran();
        loadDaftarKelompokAnggaranYangDigunakan();
    }

    public void loadTahunKelomponAnggaran() throws Exception {
        for (KelompokBiaya kelompokBiaya : kelompokBiayaDAO.listDistinct()) {
            Comboitem item = new Comboitem();
            item.setValue(kelompokBiaya);
            item.setLabel(kelompokBiaya.getTahunKelompok());
            cmbboxTahunKelompokAnggaran.appendChild(item);
        }
    }

    public void cmbTahunKelompokAnggaranOnSelect() throws Exception {
        KelompokBiaya kelompokBiaya = (KelompokBiaya) cmbboxTahunKelompokAnggaran.getSelectedItem().getValue();
        tahun = kelompokBiaya.getTahunKelompok();
        loadDaftarKelompokAnggaranUmum();
        loadDaftarKelompokAnggaranKhusus();
        loadDaftarSubKelompokAnggaranUmum();

    }

    public void loadDaftarKelompokAnggaranUmum() throws Exception {
        lstboxDaftarKelompokAnggaranUmum.getItems().clear();
        for (Map daftarKelompokAnggaranUmum : tahunKelompokAnggaranYangDigunakanDAO.getDaftarKelompokAnggaranUmum(tahun)) {
            Listitem item = new Listitem();
            item.setValue(daftarKelompokAnggaranUmum);
            item.appendChild(new Listcell(daftarKelompokAnggaranUmum.get("jenisBiaya").toString()));
            item.appendChild(new Listcell(daftarKelompokAnggaranUmum.get("namaPosBiaya").toString()));
            lstboxDaftarKelompokAnggaranUmum.appendChild(item);
        }
    }

    public void loadDaftarSubKelompokAnggaranUmum() throws Exception {
        lstboxDaftarSubKelompokAnggaran.getItems().clear();
        for (Map daftarSubKelompokAnggaranUmum : tahunKelompokAnggaranYangDigunakanDAO.getDaftarSubKelompokAnggaranUmum(tahun)) {
            Listitem item = new Listitem();
            item.setValue(daftarSubKelompokAnggaranUmum);
            item.appendChild(new Listcell(daftarSubKelompokAnggaranUmum.get("namaPosBiaya").toString()));
            item.appendChild(new Listcell());
            item.appendChild(new Listcell(daftarSubKelompokAnggaranUmum.get("sub").toString()));
            lstboxDaftarSubKelompokAnggaran.appendChild(item);
        }
    }

    public void loadDaftarKelompokAnggaranKhusus() throws Exception {
        lstDaftarKelompokAnggaranKhusus.getItems().clear();
        for (Map daftarKelompokAnggaranKhusus : tahunKelompokAnggaranYangDigunakanDAO.getDaftarKelompokAnggaranKhusus(tahun)) {
            Listitem item = new Listitem();
            item.setValue(daftarKelompokAnggaranKhusus);
            item.appendChild(new Listcell(daftarKelompokAnggaranKhusus.get("Nama_unit_kerja").toString()));
            item.appendChild(new Listcell(daftarKelompokAnggaranKhusus.get("namaPosBiaya").toString()));
            item.appendChild(new Listcell());
            lstDaftarKelompokAnggaranKhusus.appendChild(item);
        }
    }

    public void loadDaftarKelompokAnggaranYangDigunakan() throws Exception {
        lstDaftarTahunKelompokAnggaran.getItems().clear();
        for (Map daftarTahunKelompokAnggaran : tahunKelompokAnggaranYangDigunakanDAO.getTahunKelompokAnggaranYangDigunakan(lblTahunAnggaran.getValue())) {
            Listitem item = new Listitem();
            item.setValue(daftarTahunKelompokAnggaran);
            item.appendChild(new Listcell(daftarTahunKelompokAnggaran.get("tahunAnggaran").toString()));
            item.appendChild(new Listcell(daftarTahunKelompokAnggaran.get("tahunKelompok").toString()));
            lstDaftarTahunKelompokAnggaran.appendChild(item);
        }
    }

    public void btnSimpanOnClick() throws InterruptedException, Exception {
        TahunKelompokAnggaranYangDigunakan tahunKelompokAnggaranYangDigunakan = new TahunKelompokAnggaranYangDigunakan();
        tahunKelompokAnggaranYangDigunakan.setTahunAnggaran(lblTahunAnggaran.getValue());
        tahunKelompokAnggaranYangDigunakan.setTahunKelompok(tahun);
        List<Map> tahunAnggaran = tahunKelompokAnggaranYangDigunakanDAO.getTahunKelompokAnggaranYangDigunakan(lblTahunAnggaran.getValue());
        System.out.println(tahunAnggaran.size());

        try {
            if (tahunAnggaran.size() == 1) {
                for (Map m : tahunAnggaran) {
                    tahunKelompokAnggaranYangDigunakan.setIdKelompokAnggaranYangDigunakan(Integer.valueOf(m.get("idKelompokAnggaranYangDigunakan").toString()));
                }
                tahunKelompokAnggaranYangDigunakanDAO.update(tahunKelompokAnggaranYangDigunakan);
                loadDaftarKelompokAnggaranYangDigunakan();
                Messagebox.show("Data telah diubah", "Informasi", Messagebox.OK, Messagebox.INFORMATION);
            } else {
                tahunKelompokAnggaranYangDigunakanDAO.insert(tahunKelompokAnggaranYangDigunakan);
                Messagebox.show("Data Sudah Disimpan", "Informasi", Messagebox.OK, Messagebox.INFORMATION);
                loadDaftarKelompokAnggaranYangDigunakan();
            }
        } catch (Exception e) {
            Messagebox.show("Gagal menyimpan data " + e.getMessage(), "Pesan Kesalahan", Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }
}
